Businesses are interested in consolidating software applications that run on individual, often under-utilized, servers onto a smaller number of more effectively used ones. Such server consolidation is difficult to do as many technological and business factors need to be taken into account and large numbers of servers are typically involved. For example, relatively common consolidation projects typically involve the consolidation of a few hundred servers. The amount of performance data involved in analyzing server utilization and identifying performance bottlenecks is staggering, causing many users to rely only on summarized performance data (such as average or peak CPU utilization) for the analysis. However, such simple summarized data does not reflect the time-dynamic nature of the system performance and leads to overly conservative consolidation plans. For example, using a single CPU utilization number implicitly assumes that workload peaks across servers occur exactly at the same time, which is not a realistic assumption and negates the value of sharing workloads that are complementary in their time and resource usage patterns. Conventional solutions for server consolidation vary from simple rules of thumb to complex consolidation tools. Rules of thumbs typically lack the consistency and thoroughness and typically overlook performance data or issues.